//第一题
//题目：输入一行字符，分别统计出其中英文字母、空格、数字和其它字符的个数。
//import java.util.Scanner;
//public class Test{
//    public static void main(String[] args){
//        System.out.print("请输入一串字符：");
//        Scanner scan = new Scanner(System.in);
//        String str = scan.nextLine();//将一行字符转化为字符串
//        //scan.close();
//        count(str);
//    }
//    //统计输入的字符数
//    private static void count(String str){
//        //java正则表达式
//        String E1 = "[\u4e00-\u9fa5]";//汉字
//        String E2 = "[a-zA-Z]";
//        String E3 = "[0-9]";
//        String E4 = "\\s";//空格
//        int countChinese = 0;
//        int countLetter = 0;
//        int countNumber = 0;
//        int countSpace = 0;
//        int countOther = 0;
//        char[] array_Char = str.toCharArray();//将字符串转化为字符数组
//        String[] array_String = new String[array_Char.length];//汉字只能作为字符串处理
//        for(int i=0;i<array_Char.length;i++)
//            array_String[i] = String.valueOf(array_Char[i]);
//        //遍历字符串数组中的元素
//        for(String s:array_String){
//            if(s.matches(E1))
//                countChinese++;
//            else if(s.matches(E2))
//                countLetter++;
//            else if(s.matches(E3))
//                countNumber++;
//            else if(s.matches(E4))
//                countSpace++;
//            else
//                countOther++;
//        }
//        System.out.println("输入的汉字个数："+countChinese);
//        System.out.println("输入的字母个数："+countLetter);
//        System.out.println("输入的数字个数："+countNumber);
//        System.out.println("输入的空格个数："+countSpace);
//        System.out.println("输入的其它字符个数："+countSpace);
//    }
//}





//第二题
//abstract class Person{
//    private String name;
//    private String ssex;
//    private int age;
//
//    public Person(String name,String ssex,int age){
//        this.name = name;
//        this.ssex = ssex;
//        this.age = age;
//    }
//    public String getname(){
//        return name;
//    }
//    public void setname(String name){
//        this.name = name;
//    }
//    public String getssex(){
//        return ssex;
//    }
//    public void setssex(String ssex){
//        this.ssex = ssex;
//    }
//    public int getage(){
//        return age;
//    }
//    public void setage(int age){
//        this.age = age;
//    }
//    abstract void eat();
//}
//class Chinese extends Person{
//    public Chinese(String name, String sex, int age) {
//        super(name, sex, age);
//    }
//
//    void eat(){
//        System.out.println("姓名："+super.getname()+"，性别："+super.getssex()+"，年龄："+super.getage()+"，我是中国人，我喜欢吃饭！");
//    }
//    public void shadowBoxing(){
//        System.out.println(super.getname()+"在练习太极拳！");
//    }
//}
//class English extends Person{
//    public English(String name, String sex, int age) {
//        super(name, sex, age);
//    }
//
//    void eat(){
//        System.out.println("姓名："+super.getname()+"，性别："+super.getssex()+"，年龄："+super.getage()+"，我是英国人，我喜欢吃三明治！");
//    }
//    public void horseRiding(){
//        System.out.println(super.getname()+"在练习骑马！");
//    }
//}
//public class Test {
//    public static void showEat(Person person){
//        person.eat();
//    }
//    public static void main(String[] args){
//        //向上转换：子类对象转换成父类对象
//        Person zhangSan = new Chinese("张三", "男", 20);
//        Person steven = new English("史蒂文", "男", 22);
//
//        showEat(zhangSan);
//        showEat(steven);
//        //向下转换：父类对象转换成子类对象
//        Chinese chinese = (Chinese) zhangSan;
//        chinese.shadowBoxing();
//
//        English english = (English) steven;
//        english.horseRiding();
//    }
//}




//第三题
abstract class Animal{
    private String name;
    public Animal(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    abstract void shout();
    abstract void eat(Food food);
}

class Dog extends Animal{
    public Dog(String name) {
        super(name);
    }
    void shout(){
        System.out.println("汪汪汪~~~");
    }
    void eat(Food food){
        System.out.println(super.getName()+"正在啃着香喷喷的"+food.getName());
    }
}
class Cat extends Animal{
    public Cat(String name) {
        super(name);
    }
    void shout(){
        System.out.println("喵喵喵~~~");
    }
    void eat(Food food){
        System.out.println(super.getName()+"正在吃着香喷喷的"+food.getName());
    }
}

interface Food {
    String getName();
}
class Bone implements Food{
    public String getName() {
        return "骨头";
    }
}
class Fish implements Food {
    public String getName() {
        return "黄花鱼";
    }
}

class Freeder{
    private String name;
    public Freeder(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void info() {
        System.out.println("欢迎来到动物园！");
        System.out.println("我是饲养员：" + getName());
    }
    public void feed(Animal a, Food food) {
        a.eat(food);
    }
}
public class Test {
    public static void main(String[] args){
        Freeder one = new Freeder("小华");
        one.info();
        Animal cat = new Cat("小猫");
        cat.shout();
        Food f1 = new Fish();
        one.feed(cat, f1);
        Animal dog = new Dog("小狗");
        dog.shout();
        Food f = new Bone();
        one.feed(dog,f);
    }
}